// 边界图层相关操作
import GeoJSON from 'ol/format/GeoJSON'
// import VectorImageLayer from 'ol/layer/VectorImage' // 矢量边界层使用
import VectorLayer from 'ol/layer/Vector'
import VectorSource from 'ol/source/Vector'
import { Fill, Stroke, Style, Text } from 'ol/style'

export default {
  data () {
    return {

    }
  },
  watch: {
    // watch
  },
  mounted () {
    // mounted
  },
  methods: {
    /**
     * @description 获取指定区域名称范围框。
     * @param sRegionName {String} 行政区域名称，根据对应的geojson文件，获取行政区域范围数据
     * @return {object} 返回的区域数据
     */
    getBoundaryByName (sRegionName) {
      const geojsonUrl = '/mapres/maps/json/' + sRegionName + '.json'
      return new Promise(function (resolve) {
        axios.get(geojsonUrl).then((res) => {
          resolve(res)
        })
      })
    },

    /**
     * @description 创建范围框图层。
     * @param sRegionName {String} 将要载入边界线的行政区域名称; oLayerStyle {Object} 图层样式
     * @return {object} 返回创建的边界层
     */
    createBoundaryLayer (sRegionName, oLayerStyle) {
      const geoMap = '/mapres/maps/json/' + sRegionName + '.json'
      const borderLayer = new VectorLayer({
        source: new VectorSource({
          url: geoMap,
          format: new GeoJSON()
        }),
        // 设置地图默认样式
        style: oLayerStyle // this.mapDefStyle
      })
      // 返回新建图层
      return borderLayer
    },

    /**
     * @description 创建边界选择层--鼠标移动到行政边界上时，边界变色
     * @param oLayerStyle {Object} 图层样式，用来设置此层显示样式。？null
     * @return {object} 返回的区域数据
     */
    createBoundaryOverlay (oLayerStyle) {
      const selLayer = new VectorLayer({ // ol.layer.Vector
        source: new VectorSource(),
        // map: this.imap, // 设置此层在imap之上，不会被管理（不能使用它，会多出很多canvas）
        // 设置地图默认样式
        style: oLayerStyle
      })
      return selLayer
      // 返回创建的选择层
    }

    // 图层销毁
    // 边界更新
    // 根据级别变换样式
    // 清除层边界，不显示
    // 调入层边界，显示
    // 当前方法
  }
}
